
import java.util.Scanner;
import java.io.*;

public class PHIBank
{
	final private String adminId = "admin";
	final private String adminPw = "0";

	public Scanner scan = new Scanner (System.in);
	private String id;
	private String pw;
	private Account account = null;

	private boolean isConfirmed = false;		// ID/PW검사 결과 ID/PW일치시 true
	private boolean isAdminMode = false;	// Admin Mode이면 true
	private boolean isQuit = false;					// 종료할 경우 true

	

	/* PHIBank 생성자(Constructor) */
	public PHIBank(){
		introMessage();
		while ( true ) {
			// Login 메세지를 보여줌(Show the login Message)
			isQuit = loginMessage();
			// '.'을 입력시 프로그램 종료
			if ( isQuit ){
				System.exit(0);
			}
			isConfirmed = loginCheck();
			if ( isConfirmed)
				break;
			System.out.println("[ID 또는 PW가 틀립니다. 다시 입력해주세요.]");
		}

		if ( isAdminMode ){
			// Admin Mode 
			Admin admin = new Admin();
			
		}else {
			// Customer Mode
			Customer customer = new Customer(account);
		}
		
		// 프로그램 종료
		exitMessage();
	}// end of PHIBank
	
	/* intro message를 출력한다. */
	public void introMessage(){
		System.out.println("===============================================");
		System.out.println("START : PHI Bank System\t ver.1.0.0");
		System.out.println("");
		System.out.println("*****안녕하세요! 고객님! PHIBank입니다!*****");
		System.out.println("===============================================");
	}

	/* exit message를 출력한다. */
	public void exitMessage(){
			System.out.println("");
			System.out.println("[이용해 주셔서 감사합니다! 고객님! 좋은 하루되세요!]");
			System.out.println("TERMINATE : PHI Bank System\t ver.1.0.0");
	}

	/* login message를 출력한다. */
	public boolean loginMessage(){

		System.out.println("");
		System.out.println("[계좌관리를 위해서 ID와 비밀번호를 입력해주세요!]");
		System.out.println("[*) 종료를 원하시면  '.'을 입력해주세요. ]");
		System.out.println("");

		// Input ID/ PW Data
		// ID 입력
		System.out.print("ID\t\t: ");
		id = scan.nextLine();
		if (id.equals(".")){
			// '.' 입력시 프로그램 종료
			exitMessage();
			return true;
		}

		// PW 입력
		System.out.print("Password\t: ");
		pw = scan.nextLine();
		if (pw.equals(".")){
			// '.' 입력시 프로그램 종료
			exitMessage();
			return true;
		}
		
		System.out.println("===============================================");
		return false;
	}



	/* login한 id와 pw를 검사한다.*/
	public boolean loginCheck(){
		String storedId;
		String storedPw;

		// file I/O를 통해 체크
		if (id.equals(adminId) && pw.equals(adminPw)){
			isAdminMode = true;
			return true;
		}
		isAdminMode = false;
		
		FileIO accountIO = new FileIO();
		account = accountIO.accountRead(id);
		if (account == null){
			// 해당 account를 찾지 못하면(id가 틀릴 경우)
			return false;
		}
		storedId = account.getId();
		storedPw = account.getPw();

		if (id.equals(storedId) && pw.equals(storedPw)){
			return true;
		}
		return false;
	}
}
